package cn.px.dao.dto.purchase;

import cn.px.common.bean.BaseDTO;
import cn.px.common.validation.group.UpdateGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.LocalDate;
import java.math.BigDecimal;

/**
 * @Description 采购申请DTO
 * @author 品讯科技
 * @date 2024-08
 * @Version Copyright (c) 2020,北京乾元坤和科技有限公司 All rights reserved.
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class PurchaseApplyDTO extends BaseDTO implements Serializable {

    /**
     * 主键
     */
    @NotNull(groups = {UpdateGroup.class}, message = "ID不能为空")
    private String id;
    private String no;

    private Integer projectMoneyType;
    /**
     * 单号
     */
    private String billNo;
    /**
     * 总需求计划主键
     */
    private String demandPlanId;
    /**
     * 采购计划ID
     */
    private String purchasePlanId;
    /**
     * 需求计划名称
     */
    private String demandPlanName;
    /**
     * 计划名称
     */
    private String purchasePlanName;
    /**
     * 公司ID
     */
    private String companyId;
    private String regionId;
    private String groupId;
    /**
     * 公司名称
     */
    private String companyName;
    private String countryCode;
    private String projectCode;
    /**
     * 项目主键
     */
    private String projectId;
    /**
     * 项目名称
     */
    private String projectName;
    /**
     * 类型
     */
    private Integer type;
    /**
     * 日期
     */
    private LocalDate planDate;
    /**
     * 日期开始
     */
    private LocalDate planDateStart;
    /**
     * 日期结束
     */
    private LocalDate planDateEnd;
    /**
     * 呈报
     */
    private Integer reportType;
    /**
     * 需求日期
     */
    private LocalDate demandDate;
    /**
     * 需求日期开始
     */
    private LocalDate demandDateStart;
    /**
     * 需求日期结束
     */
    private LocalDate demandDateEnd;
    /**
     * 事项
     */
    private String item;
    /**
     * 设备物资综述
     */
    private String summary;
    /**
     * 特殊情况
     */
    private String specialDescription;
    /**
     * 总金额
     */
    private BigDecimal money;
    /**
     * 计划总金额
     */
    private BigDecimal planMoney;
    /**
     * 已付金额
     */
    private BigDecimal paidMoney;
    /**
     * 数量
     */
    private BigDecimal quantity;
    /**
     * 已购数量
     */
    private BigDecimal boughtQuantity;
    /**
     * 已到数量
     */
    private BigDecimal arrivedQuantity;
    /**
     * 未到数量
     */
    private BigDecimal notArriveQuantity;
    /**
     * 总重
     */
    private BigDecimal totalWeight;
    /**
     * 美元汇率
     */
    private BigDecimal dollarExchangeRate;
    private BigDecimal accountExchangeRate;
    /**
     * 总体积
     */
    private BigDecimal totalVolume;
    /**
     * 拒绝原因
     */
    private String refuseReason;
    /**
     * 申请时间
     */
    private LocalDateTime applyTime;
    /**
     * 申请时间开始
     */
    private LocalDateTime applyTimeStart;
    /**
     * 申请时间结束
     */
    private LocalDateTime applyTimeEnd;
    /**
     * 审核时间
     */
    private LocalDateTime auditTime;
    /**
     * 审核时间开始
     */
    private LocalDateTime auditTimeStart;
    /**
     * 审核时间结束
     */
    private LocalDateTime auditTimeEnd;
    /**
     * 状态
     */
    private Integer status;
    /**
     * 备注
     */
    private String remark;
    /**
     * 采购员ID
     */
    private String purchaserId;
    /**
     * 采购员名称
     */
    private String purchaserName;
    /**
     * 附件
     */
    private String fileUrl;

    private String fileName;
    /**
     * 创建人
     */
    private String createdUserId;
    /**
     * 创建人名称
     */
    private String createdUserName;
    /**
     * 创建时间
     */
    private LocalDateTime createdTime;
    /**
     * 创建时间开始
     */
    private LocalDateTime createdTimeStart;
    /**
     * 创建时间结束
     */
    private LocalDateTime createdTimeEnd;
    /**
     * 更新人
     */
    private String updateUserId;
    /**
     * 更新人名称
     */
    private String updateUserName;
    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
    /**
     * 更新时间开始
     */
    private LocalDateTime updateTimeStart;
    /**
     * 更新时间结束
     */
    private LocalDateTime updateTimeEnd;
    /**
     * 关键字
     */
    private String keyword;

    /**
     * 工作流实例ID
     */
    private String processInstanceId;

    private Integer auditNode;

    private String auditUpdateHistory;

    private Boolean contractFlag;

    private Boolean dispatchFlag;

    private Boolean reportFlag;

    private Boolean reportGroup;

    private String viceProjectId;

    private Boolean viceAuditCommonFlag;
    private Boolean maintainFlag;

    private Boolean landFlag;

    private Boolean containerFlag;
}
